#define _CRT_SECURE_NO_WARNINGS 1

#include <cmath>
#include <iostream>
#include <queue>
using namespace std;

//typedef pair<int, int> PII;
//#define x first
//#define y second
//#define N 25
//
//int arr[N][N];
//int n, m;
//int st[N][N];
//int dx[4] = { 1,-1,0,0 };
//int dy[4] = { 0,0,1,-1 };
//queue<PII> q;
//int res = 1;
//
//void bfs()
//{
//    while (!q.empty())
//    {
//        int x = q.front().x, y = q.front().y;
//        q.pop();
//        for (int i = 0; i < 4; i++)
//        {
//            int a = dx[i] + x;
//            int b = dy[i] + y;
//
//            if (a >= 0 && b >= 0 && a < n && b < m)
//            {
//                if (!st[a][b])
//                {
//                    if (arr[a][b] == 1)
//                    {
//                        q.push(make_pair(a, b));
//                        st[a][b] = true;
//                        res++;
//                    }
//                }
//            }
//        }
//    }
//}
//
//int main()
//{
//    cin >> n >> m;
//    for (int i = 0; i < n; i++)
//    {
//        for (int j = 0; j < m; j++)
//        {
//            char c;
//            cin >> c;
//            if (c == '.')arr[i][j] = 1;
//            else if (c == '#') arr[i][j] = 2;
//            else if (c == '@')
//            {
//                arr[i][j] == 1;
//                q.push(make_pair(i, j));
//                st[i][j] = true;
//            }
//        }
//    }
//    bfs();
//    cout << res << endl;
//    return 0;
//}


#include <iostream>
#include <cstring>
using namespace std;

#define N 25
int dp1[N][N];
int dp2[N][N];
int n, m, k;
int arr[N][N];

int main()
{
    while (cin >> n >> m >> k)
    {
        memset(dp1, 0, sizeof(dp1));
        memset(dp2, 0, sizeof(dp2));
        memset(arr, 0, sizeof(arr));
        for (int i = 0; i < k; i++)
        {
            int x, y;
            cin >> x >> y;
            arr[x][y] = 1;
        }

        dp1[0][1] = 1;
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= m; j++)
            {
                dp1[i][j] = dp1[i - 1][j] + dp1[i][j - 1];
            }
        }

        dp2[0][1] = 1;
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= m; j++)
            {
                if (arr[i][j] == 1)
                    dp2[i][j] = 0;
                else
                    dp2[i][j] = dp2[i - 1][j] + dp2[i][j - 1];
            }
        }

        double res = (double)dp2[n][m] / dp1[n][m];
        printf("%.2lf\n", res);
    }
    return 0;
}